package com.qinglei.recoup.system.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.qinglei.recoup.common.domain.CommonRes;
import com.qinglei.recoup.system.domain.EventLog;
import com.qinglei.recoup.system.domain.EventLogData4NurseBO;
import com.qinglei.recoup.system.domain.EventStatisticsBO;
import com.qinglei.recoup.system.pojo.AllEventParam;
import com.qinglei.recoup.system.pojo.BedEventParam;
import com.qinglei.recoup.system.pojo.EventLogVO;
import com.qinglei.recoup.system.pojo.PageParam;
import com.qinglei.recoup.system.pojo.SearchEventParam;

import javax.validation.Valid;
import java.time.LocalDate;
import java.util.List;

/**
 * @author syp
 */
public interface EventLogService extends IService<EventLog> {

    /**
     * 处理事件记录
     *
     * @param bedId
     * @param userId
     * @param eventId
     * @param type
     * @param content
     * @param tenantId
     */
    void procEventLog(Integer bedId, Long userId, Long eventId,
                      Integer type, String content, Integer tenantId);

    /**
     * 实时监控页面 获取指定床位事件信息列表(最新和更多)
     *
     * @param param
     * @return
     */
    List<EventLogVO> getBedEventList(BedEventParam param);

    /**
     * 院长首页 获取全院事件信息列表（最新）-未实现
     *
     * @param param
     * @return
     */
    CommonRes<List<EventLogVO>> getAllEvent(AllEventParam param);

    /**
     * 院长首页 查询事件信息列表（查看更多）
     *
     * @param param
     * @return
     */
    IPage<EventLogVO> searchEvent(SearchEventParam param, PageParam pageParam);

    /**
     * 获取护工相关事件日志统计数据
     * @param userId
     * @param day
     * @return
     */
    EventLogData4NurseBO getNurseStatisticsDataByDay(Long userId, LocalDate day);

    EventLog getLastEvent(Integer id);
}
